contents

Git 전략은 종종 브랜칭 모델 또는 워크플로우라고 불리며, 개발팀이 브랜치를 생성, 관리, 병합하기 위해 따르기로 합의한 규칙과 관례의 집합입니다. 일관된 전략을 갖는 것은 협업에 매우 중요하며, 이는 혼란을 방지하고, 깨끗하고 이해하기 쉬운 프로젝트 히스토리를 보장하며, 안정적인 코드베이스를 유지하는 데 도움이 됩니다.

모든 경우에 맞는 "최고의" 전략은 없으며, 올바른 전략은 팀의 규모, 프로젝트 유형, 릴리즈 일정에 따라 달라집니다.


1. GitFlow 📜

GitFlow는 매우 구조화되고 규칙이 명확한 브랜칭 모델입니다. 가장 오래되고 잘 알려진 전략 중 하나로, 정기적이고 버전이 명시된 릴리즈가 있는 프로젝트를 위해 설계되었습니다.

핵심 아이디어: 개발의 여러 단계를 위한 특정 장기 브랜치와 기능, 핫픽스, 릴리즈를 위한 단기 브랜치를 사용합니다.

브랜치 구성:


2. GitHub Flow 🚀

GitHub Flow는 GitHub에 의해 대중화된 가볍고, 단순하며, 효과적인 전략입니다. 지속적 통합 및 지속적 배포(CI/CD) 개념을 중심으로 설계되었습니다.

핵심 아이디어: main 브랜치는 항상 안정적이고 배포 가능해야 한다. 모든 개발은 기능 브랜치에서 이루어진다.

브랜치 구성:

워크플로우:

  1. main에서 설명적인 이름의 브랜치를 생성합니다 (예: add-user-authentication).

  2. 이 브랜치에 작업을 커밋합니다.

  3. 작업이 검토 준비가 되면 **풀 리퀘스트(Pull Request, PR)**를 엽니다.

  4. 팀이 코드를 검토하고, 변경 사항에 대해 논의하며, 자동화된 테스트를 통해 안정성을 검증합니다.

  5. PR이 승인되면 main으로 병합됩니다.

  6. 업데이트된 main 브랜치는 자동으로 운영 환경에 배포됩니다.


3. GitLab Flow

GitLab Flow는 GitHub Flow를 좀 더 구조화한 확장 버전입니다. 다른 환경과 릴리즈를 처리하기 위해 추가적인 브랜치를 두어, 단순한 "main에 병합하고 배포" 모델보다 더 많은 제어를 제공합니다.

핵심 아이디어: GitHub Flow와 동일하지만, 추가적인 장기 환경 브랜치를 둡니다.

브랜치 구성:

워크플로우:

  1. 기능 브랜치 워크플로우는 GitHub Flow와 동일합니다 (main에서 분기, PR, main으로 병합).

  2. main이 릴리즈 준비가 되면, pre-production 브랜치로 병합되고, 이는 최종 테스트를 위해 스테이징 환경으로의 배포를 트리거합니다.

  3. 검증이 완료되면, pre-production 브랜치는 production 브랜치로 병합되어 실제 서버로의 최종 배포를 트리거합니다.


4. 트렁크 기반 개발 (TBD) 🌳

트렁크 기반 개발(Trunk-Based Development)은 구글이나 메타와 같은 최고의 기술 기업에서 사용하는 고속 전략입니다. 브랜치를 극도로 짧게 유지하고 코드를 가능한 한 자주 주 브랜치에 통합하는 것을 강조합니다.

핵심 아이디어: 모든 개발자는 "트렁크"라고 불리는 단일 주 브랜치(main)에서 작업합니다.

워크플로우:

전략 요약

전략 핵심 아이디어 주요 브랜치 적합한 환경
GitFlow 엄격한 버전 관리 릴리즈 master, develop 전통적인 소프트웨어, 모바일 앱
GitHub Flow 단순한 지속적 배포 main 대부분의 웹 애플리케이션, CI/CD
GitLab Flow 환경을 통한 통제된 릴리즈 main, production 스테이징 환경이 필요한 앱
Trunk-Based 단일 브랜치로의 고속 통합 main (트렁크) 견고한 테스트를 갖춘 엘리트 팀

references